北海道テレビ放送「ゼロから始めた社内内製から1年。こんなに大きくなりました。 -HTB 内製開発のキセキ-」#devio_showcase
「残り1ヶ月で、開発実績がないクラウドプラットフォームでシステムをリリースする」
そんなキセキを成し遂げた、2019年10月。つくりあげた映像配信システムでたくさんの人を笑顔にしたのが、北海道テレビ放送株式会社(HTB)様です。あれから1年。いまや、さまざまなシステムをAWS上で展開されています。
本記事はクラスメソッドのイベント「Developers.IO Showcase」で公開された、HTBの「ゼロから始めた社内内製から1年。こんなに大きくなりました」のセッションレポートです。セッション内では、予算も実績もゼロの状態からどのようにリリースを成功させるに至ったのか、またAWS上での構築開発継続的にを行うための社内体制や心構えについてお話いただきました。
これからAWSの導入や勉強をはじめようと考えている方には、参考となる情報が盛り沢山のセッションです。
なお、レポート内容の詳細、技術支援に関するご相談がございましたらクラスメソッドの担当者が承ります。下記のフォームにてご入力ください。
セッション情報
セッションタイトル
「ゼロから始めた社内内製から1年。こんなに大きくなりました。 -HTB内製開発のキセキ-」
スピーカー
北海道テレビ放送株式会社 コンテンツビジネス局 ネットデジタル事業部
三浦一樹氏
自己紹介
三浦一樹と申します。HTB北海道テレビ放送株式会社という、地方のテレビ局で仕事をさせていただいています。弊社の「onちゃん」というキャラクターが「水曜どうでしょう」で有名になりました。グッズもたくさん出ています。色々とコミュニティ活動を行っていたところ、AWS SAMURAI 2019という賞をいただきました。
変化と挑戦の1年を振り返る
約1年前はAWSで何かを作った経験もなかった状態で、クラスメソッドさんに支援をお願いしました。 技術コンサルティングをお願いしたのは最初の1回のプロジェクト構築のみでしたが、得るものが非常に多く、今思えばその後の構築開発のためのノウハウも得ることができたように思います。
以降はクラスメソッドメンバーズの技術サポートを活用しながら、自分たちの手で複数回の環境構築を実施しました。
こちらをどのように社内で進めていったのかを、1年間を振り返りながらご紹介できればと思います。
AWSの開発経験者ゼロ、予算ゼロからのスタート
元々、HTB内では自社でものをつくるといったことはほとんどなく、ITの部門もベンダーコントロールや仕様書の作成、既存環境のメンテナンスが主な仕事でした。
AWSを利用するにあたっても、元々割り当てられた予算はなかったため、企画・提案を行い会社から予算を獲得する段階からのスタートでした。
社内へ広がるAWS
プロジェクトがスタートした当時、ネットデジタル事業部のメンバーは5名でした。そのうち2名は部長と副部長なので、実際に作業するメンバーは私を含めた3名でした。
現在ではチームメンバーは10名に増えています。また、社内でAWSの資格取得を頑張ろうという前向きな雰囲気があり、部内外で取得する社員が増えています。 AWSという共通言語が徐々に社内に浸透しているため、こちらからの何かを提案する際の意識合わせがスムーズになってきたと感じており、非常にありがたいです。
すべての始まり
オンラインライブ配信(2019年9月〜10月)
ここまでAWSが大きく社内に広まったきっかけは、2019年10月の「水曜どうでしょう祭 FESTIVAL in SAPPORO」のオンラインライブ配信プロジェクトでした。
「水曜どうでしょう祭 FESTIVAL in SAPPORO」は人気テレビ番組のイベントです。イベントそのものも非常に人気があり、3日間の開催期間で延べ24,000人分もの入場チケットが発売と同時に即完売するほどでした。 「『イベントに行きたいのに行けない』と悲しむファンの方々に、会場の様子を一部分だけでもお届けしたい」と思い、イベントのオンラインライブ配信を企画しました。
イベントの責任者に「利益が出るならOK」と許可をもらったため、技術的な実現可否はもちろん、費用の概算をあらかじめ行う必要がありました。そこで、何度かイベントなどでご一緒したクラスメソッドさんに相談することにしました。
初回の打ち合わせでは、利用するAWSサービスのアイコンを並べた資料をお見せしながら「こんな感じで動画配信したいんですが……」とざっくばらんに相談をしました。今あらためて見返すと、構成図よりもさらに簡単な図ですね(笑)。
このご相談の段階で、イベント開催まで残り約1ヶ月ほどでした。
あまり開催まで時間の余裕もなかったため、クラメソさんも無理なら「無理!」と言ってくれるだろうと思っていたら……
クラメソ「いけるんじゃないですかね」
とのお返事がありました。それなら腹をくくって挑戦してみよう!と、クラメソさんとHTBの社内3名での開発がスタートしました。
HTB側から質問したいことは、たいていの場合既に 技術ブログ「Developers.IO」の記事として公開されているトピックでした。何度か質問のやりとりをしている内に、Developers.IOのブログ記事だけでなく、AWSの公式ドキュメントや公式ブログを読んで調べる習慣がつきました。
試行錯誤の結果、無事にイベント当日までに配信システムは完成できました。SaaSとサーバレスを組み合わせた構成となっています。
このプロジェクトを通して、自分たちの「やりたいこと」を実現するための自己学習の方法が身についたと感じています。ポイントは以下の通りです。
- AWSの公式ドキュメントをしっかりと読む
- ドキュメントが英語でも躊躇せず、翻訳ツールなどを利用して向き合う
- 困ったらDevelopers.IO & クラスメソッドメンバーズのサポート窓口を利用する
怒涛の1年
「水曜どうでしょう祭」含め、この1年で開発を行ったプロジェクトは主に5つです。2019年12月以降の開発は、クラメソさんに技術コンサルティングをお願いせず、社内内製で行っています。
企画提案からサポートまで、開発の前後を含めて担当しています。
WebサーバのLift & Shift(2019年12月〜2020年5月)
Webサーバの既存環境が不調となってしまったため、思い切ってAWSへのLift & Shiftに挑戦することにしました。
このプロジェクトでは、新たに2つのことにチャレンジしました。
- VPCの内側やDirect Connectなどのネットワーク周りの設定
- AWS特有のセキュリティもしっかり理解する
AWSにおけるセキュリティの考え方を理解するために、臼田 佳祐さんのブログを全部読みました。セキュリティ関連のトピックはほとんど臼田さんのブログを参考に勉強しています。
こちらのプロジェクトは現在も次のステップに向けて進行中です。EC2へのLift & Shift を完了した当初は、WebサーバにはEC2を用いていました。現在はECS(Fargate)への切り替えを実施中で、最終的にはWebサーバで利用するEC2をゼロにすることを目標としています。
有料ライブ配信 & ライブコマース HTB Online劇場(2020年6月〜2020年7月)
2020年の上半期は、テレビ業界にとってCOVID-19による大打撃を受けた時期でした。もちろんHTBも例外ではなく、企画していたリアルイベントがすべて中止になったり、店舗への来客を促すようなCMによる収益が激減してしまいました。
そこで、「水曜どうでしょう祭り」のオンデマンド配信と、「shopify」というeコマース用のプラットフォームを組み合わせた、「HTB Online劇場」をつくりはじめました。 この「HTB Online劇場」のモチーフは『映画館』です。映画館では、自分の好きな映像作品を楽しんだあと、同じ場所にある売店で関連グッズを購入することができます。同じ仕組みをライブ配信でも実現したいと思い、配信されるライブ映像の関連グッズを、同じ画面ですぐに購入できるようにしました。
オンデマンド配信の仕組みは、ほとんど「水曜どうでしょう祭り」の時のものを流用しました。この段階での変更点は、CI/CDを活用するために、Code シリーズと呼ばれるAWSサービスを使い始めた箇所でした。ステージング環境と本番環境を分けたり、リポジトリを意識したりといったルールを、明示的に確立していくようになりました。
しかし、プロジェクトに転機が訪れます。本プロジェクトの開発中に、クラスメソッドさんのオンラインイベント「Developers.IO CONNECT」が開催されていました。その中のセッションの一つに、もこさんの「AmplifyとAppSyncでモダンでイケてるWebサービスを爆速で立ち上げようぜ」があり、チームのメンバーみんなで試聴していたのですが……。
「AmplifyとAppSync、めちゃめちゃカッコいい!!!」
セッションをきっかけに、今まで開発を行っていたCodeシリーズを捨てて、Amplifyを軸に再設計・構築を行い今に至ります。
現在稼働している 「HTB Online劇場」では、不定期に毎月2回程度の有料ライブ配信を実施しています。配信動画の関連グッズを購入できる仕組みは、Shopifyを使って実装しました。最近では配信にスポンサーがつく事例もあり、事業として軌道に乗ってきたと感じています。
水曜どうでしょうエアcaravan(2020年8月〜2020年10月)
「水曜どうでしょう」ではツアーイベントも行っています。全国を回りながら出演者とファンのみなさんが交流する貴重な機会でしたが、残念ながらこちらもCOVID-19の影響で中止となりました。
代わりに、「水曜どうでしょうエアcaravan in 赤平 2020」というオンラインイベントを企画しました。
開発開始からイベント当日まで約2ヶ月ほどで、ライブ配信のサービスを構築しました。全体アークテクチャは以下の通りです。
ロケ地からのライブ映像を、HTB社内にあるAWS Elemental MediaLinkを経由してAWS内に送信しています。AmplifyとAppSyncを活用することで、従来のライブ配信環境と比較して、運用負荷を大幅に軽減することができています。
また、今回技術的にこだわった点として「時間限定商品の販売」機能をAppSyncのSubscriptionで実装しています。主な要件と、実現方法は以下の通りです。
- ライブ配信の内容に合わせて、限定商品を動画の下に表示させたい(いつ、何を売るかのタイミング未定)
- →現地の配信車で、コンソールからmutation
- 画面切り替え時に画面のリロードを行いたくない(配信映像が途切れてしまうため)
- →AppSyncのsubscriptionを利用して、リロードなしでの画面の切り替えを実装
- 商品は予め用意するが、全ての商品を本当に販売画面に表示するかはわからない
- →shopifyのコレクションのIDをGraphQLで入れ替えて実現
ビデオオンデマンド オフロード(2020年10月〜)
HTBのビデオオンデマンド配信サービス「北海道onデマンド ユメミルひろば」が、「水曜どうでしょう」の最新作の配信直後にダウンしてしまいました。
1週間後の次回作の配信までにオフロード先の「北海道onデマンド ユメミルひろば 弐」を作ってリリースを行うプロジェクトが立ち上がりました。
大急ぎでリリースする必要があったため、大変な場面もありました。しかし、リリース後に視聴者の皆さんから「快適に観ることができました。ありがとうございました」という声をいただき、やってよかったなぁという気持ちです。
クラスメソッドとの仕事で得たもの
クラスメソッドさんと一緒に仕事をして、自分たちのやりたいことを実現するために自己学習するための方法が身についたと感じています。
AWSを利用する上でのベストプラクティスや知見をDevelopers.IOでたくさん公開されており、大変助けられました。
これからも、よろしくお願いします。
Q&A
SaaSを多く利用されていますが、「SaaSはお金がかかる」と敬遠されることも少なくないと思います。導入にあたって苦労や工夫されたことはありますか?
予算を得るために、企画を提案する際は、動いているものを見せて納得させる工夫をしていました。
ゼロから何かをつくるとなると時間も手間もかかりますが、「既にあるものを改良していく」スタンスだと相手にも稼働しているイメージが伝わりやすいです。
また、相手のフィードバックもより具体的になるため、要件が詰めやすいという利点がありました。
自己学習されていったとのことですが、挫折しそうになりませんでしたか?
挫折はいまだにありますね 笑。
ただ、自己学習そのものが目的ではなく、実現したいものをつくることが目的であることを頭に置いておくことが大切だと思います。実現手段が難しすぎて挫折しそうになったときは、「もっと簡単な方法で実装する手段があるのではないか?」と思考を切り替えることができるためです。ゴールは変わらないなら、より楽な道を選んでいくのがコツだと思います。
また、Developers.IOをはじめ、AWS関連のたくさんのブログなどを参考にしました。自分が悩んでいることは、誰かが同じ悩みを抱えていることがほとんどなので、情報収集をしながら学習をすすめていくことができました。
Developrs.IOに今後期待することはありますか?
私自身はDeveloprs.IOにとても助けられましたが、まだまだ全国の困っている人に届いていないのでは?という印象があります。
PVがもっと増えて、世の中のたくさんの人に届くようになれば、自分たちのように困っている人がもっと助けられて、みんなが幸せになるのではないかな、と思います。
セッションを視聴して
Developers.IOブログの執筆者のひとりとして直接「記事が役に立った!」というお声を聞くことはとても励みになりました。
三浦様はセッション内でクラスメソッドのことを大変評価してくださっていて、ありがたい限りでした。ただただ一緒にモノを作るだけでなく、お客様と一緒に知見を育てていくことができるのが、クラスメソッドの強みなのかなと自負しています。クラスメソッドとしてドラマチックな「キセキ」の一端を担うことができたこと、大変嬉しく思います。